DSN レス接続のパターンと特徴 #Alteryx
Alteryx での ODBC データソースを使用したデータベースへの接続にあたり、DSN を使用する方法と、DSN レス接続があります。DSN レス接続の方法はいくつかあるので、それぞれの特徴をまとめておきたく記事としました。
ODBC データソースと DSN の利用
前提として、Alteryx では、ODBC を使用するデータベース接続が可能です。
このためには、対応するデータベース製品のドライバを各クライアント端末にインストールし、DSN(Data Source Name)を構成することが一般的かと思います。Alteryx からは、ワークフロー上のツールから構成済みの DSN を指定することで、ODBC から対象のデータソースに接続します。
下図はデータ入力ツールの設定画面です。odbc:DSN=mysql-uni
と記述がある部分より、この接続は、ODBC 接続を使用しmysql-uni
という DSN を指定していることがわかります。
また、DSN は以下の名称を指します。
これは、アプリケーションが ODBC データ ソースへの接続を要求するために使用する名前です。つまり、ODBC 接続を表す記号名です。ODBC に接続するときに、データベース名、ディレクトリ、データベース ドライバー、ユーザー ID、パスワードなどの接続の詳細が保存されます。
DSN (データソース名) とは何ですか? | Microsoft サポート
接続に使用する情報(データベース ドライバー、ユーザー名、パスワードなど)がまとめて保存されており、呼び出せるという特徴があるので、データソースへの接続を行うワークフローを個人単位で利用する際は、DSN を利用しても特段問題はないのですが、DSN を利用するワークフローを他の端末で実行したい場合(他のユーザーと接続を共有したい場合)、その別端末上でも同様の DSN を構成する必要があります。
各ユーザー端末で、正しく設定ができていないと、データソースに接続できない可能性があります。
そこで、DSN をあえて利用しない、DSN レス接続によるデータソースへの接続を行う場合もあり、Alteryx でも DSN レス接続を使用することが可能です。
DSN レス接続
接続文字列
DSN には、接続に使用するデータベース ドライバー、データベースホスト、ユーザー名、パスワードなどが保存されているので、DSN レス接続では、このような接続情報を接続文字列として与えます。
接続文字列はデータソースごとに異なる場合があります。以下に例を記載します。
- Snowflake の例
odbc: DRIVER={Simba Snowflake ODBC Driver}; SERVER={XXXXX.snowflakecomputing.com}; UID={ユーザー名}; WAREHOUSE={ウェアハウス}; ROLE={ロール}; AUTHENTICATOR={snowflake}; PWD={パスワード};
参考:Using DSN-less ODBC Connections from Alteryx and other software to the Snowflake Data Cloud
- MySQL の例
odbc:DRIVER={MySQL ODBC 8.0 Unicode Driver};server={エンドポイント};database={データベース};USER={ユーザー名};PASSWORD={パスワード};
{DRIVER}についても、異なるドライバを使用する際は、その名称を指定します。接続文字列の記述は、以下が参考になります。
ConnectionStrings.com - Forgot that connection string? Get it here!
DSN レス接続の設定
Alteryx における DSN レス接続の方法として、以下があげられます。
- データソースに接続するツール(データ入力ツールなど)設定上に直接、接続文字列を記述する
- データ接続の管理を使用する
- In-DB 接続の管理を使用する
- DCM を使用する
それぞれみていきます。
ツール設定上に接続文字列を記述する
データ入力ツールやデータ出力ツールの接続欄には、直接、接続文字列を記述することができます。下図では、データ入力ツールの接続欄に上記の例で記載した MySQL への接続情報文字列を記述しています。
この場合、はじめにパスワードを直接接続欄に記載する必要があります。一度入力すると「EncPwd1」のように表示され、平文で表示されることはありません。
ワークフロー(ツール)に接続情報があるので、データ入力/出力ツールであれば、以下の点に注意すれば、ワークフローを共有することで他の端末からもデータソースへの接続が可能です。
- 共有先の端末からデータソースにアクセス可能であること
- ファイアウォールなど
- 共有先の端末にも同じドライバがインストールされていること
- ドライバがインストールされていない場合、以下のようなエラーが表示されます
データ接続の管理を使用する
Alteryx Designer の「オプション > 詳細オプション 」よりデータ接続管理のメニューを開くことができます。こちらは通常のデータ入力/出力ツールで使用できる接続情報の管理に使用できる機能です。
「接続の追加 > その他」より接続文字列を直接記述するデータ接続を作成することができます。
この際、DSN を使用する接続文字列を記述することもできるので、この場合は DSNレス接続とならない点にご注意ください。下図の場合、上段が接続文字列を直接記述しているDSN レス接続です。下段のodbc:DSN=Snowflake DSN
という接続文字列は、ODBC データソースで作成済みのSnowflake DSN
という名称の DSN を指定しています。
ここで作成した接続情報は、Alteryx 上に保存されることになります。データ入力ツール・データ出力ツールからこの接続を利用可能で、データ接続ウィンドウの「保存済み」より選択可能です。
ツール上は、以下のようにaka
からはじまる接続情報となります。
直接接続文字列を記述する必要がありますが、一度作成した接続情報を後ほど呼び出すことができる点は、直接ツールに記述する方法にない特徴と思います。
Alteryx Server との連携
また、この機能による接続情報は、Alteryx Server でも作成可能で、Designer から参照することもできます。なお、この際も DSN レス接続であれば、ドライバをインストールしている端末からその接続情報を使用したデータソースへの接続が同様に可能です。
Alteryx Server での接続情報の作成・Designer との連携については、以下の記事をご参照ください。
Alteryx ServerのData Connectionで接続を管理する – Alteryx Serverアドベントカレンダー2022 | Developers IO
In-DB 接続の管理を使用する
In-DBツールの場合、接続情報は「オプション > 詳細オプション」にある「In-DB 接続の管理」にて管理されます。接続In-DB ツールから新たに接続を作成する際も、この管理画面が開くことになります。
In-DB 接続の管理でも、直接、接続文字列を記述することができ、DSN レス接続を利用可能です。下図は In-DB接続の管理上の[読み取り]に関する設定画面ですが、「接続文字列」欄に直接ドライバやユーザー名などを含む接続文字列を記述しています。
「In-DB 接続の管理」で作成した接続先情報は Alteryx 側で設定ファイルとして保持されることになり、ツールからは、接続名を指定することになります(上図ではSnowflake indb dsn less
という名称)。
そのため、DSN レス接続であっても、ワークフローを共有するだけでは、共有先の端末からデータソースに接続できません。
接続タイプとして「ファイル」を使用し、作成される「.indbc」ファイルも一緒に共有する必要があります。In-DBツールにおけるデータベースへの接続設定については、以下に詳しく記載があるので、こちらもご覧ください。
Alteryxにおけるデータ入出力の際とIn-DBを使った際とでのODBC接続の設定の違い | Developers IO
DCM を使用する
DCM は Version 2021.4 から利用可能な機能です。DCM では「データソース」と「資格情報」を定義し、その組み合わせを「接続(Connection)」として実際にデータソースへの接続に使用します。
Designer 2021.4 リリースノート | Alteryx Help
DCM はデータソースへの接続情報を一元管理するための機能となっており、DCM で定義した接続情報は、In-DBツールを含む DCM に対応するツールから呼び出すことができます。
DCM Supported Connectors and Tools | Alteryx Help
DCM から接続情報を呼び出した場合、ツール上は、以下のようにdcm
からはじまる接続情報となります。
また、DCM に対応するデータソースの接続を作成する際に、DSN レス接続を使用することが可能な場合があります。
以下はデータ接続マネージャーでテクノロジーとして「PostgreSQL」を指定した画面です。PostgreSQL への接続方法としてさらに、DSN を使用する「PostgreSQL ODBC」や DSN レス接続を使用するかなどを選択することができます。
上記で「PostgreSQL ODBC DSNレス with Simba」を選択すると次のような設定画面が開きます。
GUI 上の設定項目に、接続情報を入力していけばよく、上述の方法のような接続文字列(ドライバ名など)をユーザーが記述する必要はありません。データ接続の管理では、直接接続文字列を記述する必要があったので、DCM より接続情報を作成・呼び出すことでデータソースへの接続がよりスムーズになることが期待できます。
Version 2023.1 の場合、以下の主要なデータベース製品は、DSNレス接続に対応しています。(※一部抜粋)
- PostgreSQL
- MySQL
- Microsoft SQL Server
- Oracle
- Amazon Redshift
- Snowflake
- Google BigQuery
Alteryx Server との連携
DCM も Alteryx Server 上で作成することができます。また、Alteryx Designer のユーザーと同期したり、Server 上の他のユーザーが異なるユーザーの DCM を含むワークフローを実行することができる共有機能もあります。また、一般的な使い方ではないかもしれませんが、Alteryx Server のあるユーザーの DCM を Designer の複数端末と同期することで、DCM そのものを共有することも可能です。
DCM の概要については、以下をご参照ください。
Alteryx の DCM の概要 | Developers IO
まとめ
DSN レス接続を利用する際の4つのパターンをまとめると以下のようになります。
※いずれも接続情報の共有先からデータソースに接続するには、ドライバのインストールや共有先からもデータソースに接続できる必要があります。
方法 | 対象 | 特徴 |
---|---|---|
ツール設定に直接記述 | データ入力・出力ツール | ・各ツールの接続設定に直接接続文字列を記述する ・異なるワークフローや複数の入出力ツールを配置する場合、同じデータソースであっても都度入力が必要 ・ワークフローを共有することで共有先でもデータソースに接続可能 |
データ接続の管理を使用 | データ入力・出力ツール | ・「データ接続の管理」で接続情報を作成し、ツールから呼び出し可能 ・接続を作成する際は、接続文字列を直接記述する ・Alteryx Server との連携が可能 ・接続情報を共有することで共有先でもデータソースに接続可能 |
In-DB 接続の管理を使用 | In-DBツール | ・「In-DB 接続の管理」で接続情報を管理、ツールからその接続名で呼び出し可能 ・「In-DB 接続の管理」で接続を作成する際は、接続文字列を直接記述する ・他端末との連携時は、接続タイプを「ファイル」とし、「.indbc」ファイルも一緒に共有 |
DCM | データ入力・出力ツール In-DBツール |
・DCM で接続情報を管理、ツールからその接続名で呼び出し可能 ・DCM で接続を作成する際は、必要な情報を各設定項目に入力する(接続文字列の記述は不要) ・Alteryx Server との連携が可能 ・DCM を共有することで、共有先でもデータソースに接続可能 ・DCM に対応するツールのみ利用可能 |
さいごに
DSN レス接続を使用すると、接続情報を共有したい際に効果を発揮する場合があります。Alteryx での DSN レス接続の設定方法もいくつかあるので、状況に応じて最適なものを選ぶことで、よりスムーズにデータソースに接続し、分析時のストレスが軽減できると思います。こちらの記事が何かの参考になれば幸いです。